#include <iostream>
#include <string>
#include<thread>

void threadHandle1() 
{
    // 让子线程睡眠两秒，this_thread获取当前线程，chrono计时的函数
    std::this_thread::sleep_for(std::chrono::seconds(2));
    std::cout << "hello,thread1" << std::endl;
}

void threadHandle2(int time)
{
    // 让子线程睡眠两秒，this_thread获取当前线程，chrono计时的函数
    std::this_thread::sleep_for(std::chrono::seconds(time));
    std::cout << "hello,thread2" << std::endl;
}

int main()
{   
    // 创建了一个线程对象t1，传入一个线程函数，新线程就开始运行了
    std::thread t1(threadHandle1);
    // join是子线程等待主线程结束，主线程继续往下执行，
    // detach则是分离线程，子线程和主线程无关联，可以独立运行，等主线程结束，整个程序结束，所有子线程都自动结束了
    
    // 传入参数的情况
    std::thread t2(threadHandle2, 2);

    t1.join();
    t2.join();

    std::cout << "main thread hello" << std::endl;

    return 0;
}